home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / src / X11 / xarchie-2.0.9 / syserr.c < prev    next >
C/C++ Source or Header  |  1995-06-18  |  2KB  |  65 lines

  1. /*
  2.  * syserr.c : Routines for system errors (like perror()). This puts
  3.  *    together an error string based on errno (if the system has
  4.  *    errno) and then calls the interface function alert0() to
  5.  *    display it.
  6.  *
  7.  * George Ferguson, ferguson@cs.rochester.edu, 23 Apr 1993.
  8.  * 13 May 1993: Use HAVE_SYS_ERRLIST properly and correct comments.
  9.  *
  10.  * Compile-time parameters (config.h)
  11.  *    HAVE_STRERROR:    ANSI function strerror() exists
  12.  *    HAVE_SYS_ERRLIST: char *sys_errlist[] exists
  13.  *    HAVE_ERRNO:       int errno exists (it better!)
  14.  */
  15. #include <stdio.h>
  16. #include "config.h"
  17.  
  18. #ifdef HAVE_ERRNO
  19. #include <errno.h>
  20. # ifndef MSDOS
  21.   extern int errno;        /* MSDOS doesn't like this, apparently */
  22. # endif /* !MSDOS */
  23. #else /* !NO_ERRNO */
  24. int errno;            /* Make our own, pretty useless */
  25. #endif /* !NO_ERRNO */
  26.  
  27. #ifdef HAVE_STRERROR
  28. /* This is the same as NeedFunctionPrototypes for an X file */
  29. #if defined(FUNCPROTO) || __STDC__ || defined(__cplusplus) || defined(c_plusplus)
  30.    extern char *strerror(int);
  31. # else
  32.    extern char *strerror();
  33. # endif /* !NeedFunctionPrototypes */
  34. #else /* !HAVE_STRERROR */
  35. # ifdef HAVE_SYS_ERRLIST
  36.    extern char *sys_errlist[];
  37. # endif /* !HAVE_SYS_ERRLIST */
  38. #endif /* !HAVE_STRERROR */
  39.  
  40. extern void alert0();        /* Function to display the error message */
  41.  
  42. /*    -    -    -    -    -    -    -    -    */
  43.  
  44. void
  45. sysError(str)
  46. char *str;
  47. {
  48.     char buf[256];
  49.  
  50. #ifdef HAVE_STRERROR
  51.     sprintf(buf,"%s: %s",str,strerror(errno));
  52. #else
  53. #ifdef HAVE_SYS_ERRLIST
  54.     sprintf(buf,"%s: %s",str,sys_errlist[errno]);
  55. #else
  56. #ifdef HAVE_ERRNO
  57.     sprintf(buf,"%s: Errno = %d",str,errno);
  58. #else
  59.     sprintf(buf,"%s: System error.");
  60. #endif /* !HAVE_ERRNO */
  61. #endif /* !HAVE_SYS_ERRLIST */
  62. #endif /* !HAVE_STRERROR */
  63.     alert0(buf);
  64. }
  65.